// 头像管理模块
import { getUserInfo, setUserInfo, updateUserInfo } from './user.js';
import { showNotification } from './notification.js';

/**
 * 设置用户头像
 * @param {string} avatarUrl 头像URL
 * @returns {boolean} 设置结果
 */
export function setUserAvatar(avatarUrl) {
    const user = getUserInfo();
    if (!user) return false;
    
    user.avatar = avatarUrl;
    setUserInfo(user);
    
    // 同时更新users数组中的用户数据，这样下次登录时也能显示最新头像
    try {
        const users = JSON.parse(localStorage.getItem('users') || '[]');
        const userIndex = users.findIndex(u => u.email === user.email || u.id === user.id);
        if (userIndex !== -1) {
            users[userIndex].avatar = avatarUrl;
            localStorage.setItem('users', JSON.stringify(users));
        }
    } catch (e) {
        console.error('更新users数组中的头像信息失败:', e);
    }
    
    updateUserInfo();
    showNotification('头像更新成功', '您的头像已成功更新', 'success');
    return true;
}

/**
 * 处理头像上传（转换为base64存储在localStorage中）
 * @param {File} file 上传的文件对象
 * @returns {Promise<string>} 返回头像URL
 */
export function uploadAvatar(file) {
    return new Promise((resolve, reject) => {
        // 检查文件类型
        if (!file.type.match('image.*')) {
            reject('请上传有效的图片文件');
            return;
        }
        
        // 检查文件大小（限制为5MB）
        if (file.size > 5 * 1024 * 1024) {
            reject('图片大小不能超过5MB');
            return;
        }
        
        const reader = new FileReader();
        reader.onload = function(e) {
            // 生成唯一的图片ID
            const imageId = `img_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
            
            // 存储图片数据到localStorage
            localStorage.setItem(imageId, e.target.result);
            
            // 返回可用于设置的头像URL
            resolve(`data:image/${file.type.split('/')[1]};base64,${e.target.result.split(',')[1]}`);
        };
        reader.onerror = function() {
            reject('图片读取失败');
        };
        reader.readAsDataURL(file);
    });
}

/**
 * 从URL设置头像
 * @param {string} url 头像URL
 * @returns {boolean} 设置结果
 */
export function setAvatarFromUrl(url) {
    // 验证URL格式
    try {
        new URL(url);
    } catch (e) {
        showNotification('URL无效', '请输入有效的图片URL', 'error');
        return false;
    }
    
    // 预加载图片以验证有效性
    const img = new Image();
    img.onload = function() {
        setUserAvatar(url);
    };
    img.onerror = function() {
        showNotification('图片无效', '无法加载指定的图片URL', 'error');
    };
    img.src = url;
    return true;
}